/*讲解"原码"概念的重要文档*/

/*引入头文件*/
#include <stdio.h>

int main()
{
    /* 何为<原码>?
     * 原码以<bit>为单位,最高位为<符号位>,<其余位>为数值的<绝对值>
     * <符号位>零表示<正数>,一表示<负数>
     *
     * 何为<反码>?
     * <正数>反码原码<相同>
     * <负数>符号位为<1>其余位原码<取反>
     *
     * 何为<补码>?
     * 计算机存储的值类型
     * <正数>的原码,反码,补码<相同>
     * <负数>反码加一
     *
     * 注意:
     * 原码,反码,补码,都是<二进制>
     * 任何二进制操作  都对<补码>进行
     */

    /*案例*/
    char source_code_one = 0b111;
    printf("原码: %d \n", source_code_one);
    /* 注意: c语言<不允许>写原码字面量
     * char类型占用1byte内存,换算为bit是8,原码就需要补到8位
     * 二进制"111"换为原码就是"00000111"
     */
    char source_code_two = -0b111;
    printf("反码: %d \n", source_code_two);
    /* 同样是char类型,但是字面量是<负数>
     * 根据已知原码"00000111",推断出反码为"11111000",补码为"11111001"
     */
}